// compose函数
function compose(...funcs) {
	// funcs是compose要组合的那些函数，arg是componse返回的函数的参数
	if (funcs.length === 0) {
		// 如果没有传入函数，那么直接返回一个函数，函数的返回值就是传进来的参数
		return (arg) => arg;
	}
	if (funcs.length === 1) {
		// 如果只传入了一个函数，直接返回这个函数
		return funcs[0];
	}

	return funcs.reduce((all, current) => {
		return (args) => {
			return all(current(args));
		};
	});
}

function a(obj) {
	obj.a = 1;
	return obj;
}
function b(obj) {
	obj.b = 1;
	return obj;
}
function c(obj) {
	obj.c = 1;
	return obj;
}
let res = compose(a, b, c);
let dd = res({});
console.log('res', dd);
